import { request } from 'umi';

// 创建交易
export async function createTrade(data) {
  const tokenResp = await getBizToken({
    action: 'createOrder',
  });
  const token = tokenResp?.data?.token;

  return request(`${window.API_BASE_URL}/admin/trade`, {
    method: 'POST',
    headers: {
      'X-Order-Token': token,
    },
    data,
  });
}

// 创建交易
export async function previewTradePrice(data) {
  return request(`${window.API_BASE_URL}/admin/trade/preview`, {
    method: 'POST',
    data,
  });
}

// 修改交易(金额等)
export async function modifyTrade(data) {
  return request(`${window.API_BASE_URL}/admin/trade/${data?.id}/modify`, {
    method: 'POST',
    data,
  });
}

// 获取交易列表
export async function getTradeList(params = {}) {
  return request(`${window.API_BASE_URL}/admin/trade/list`, {
    method: 'GET',
    params,
  });
}

// 取消交易
export async function cancelTrade(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}/cancel`, {
    method: 'POST',
  });
}

// 完成交易(手动完结，兼容实操情况下线下收款的情况)
export async function finishTrade(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}/finish`, {
    method: 'POST',
  });
}

// 获取交易详情
export async function getTradeDetail(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}`, {
    method: 'GET',
  });
}

// 删除交易
export async function deleteTrade(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}`, {
    method: 'DELETE',
  });
}

// 打印收银小票（线下收款环节可能需要）
export async function printCashierTicket(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}/printCashier`, {
    method: 'POST',
  });
}

// 打印商品小票（后厨需要），下单后会自动触发，但如果需要手动触发，可以调用此接口（整个交易）
export async function printTradeTicket(id) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}/printTicket`, {
    method: 'POST',
  });
}

// 打印商品小票（后厨需要），下单后会自动触发，但如果需要手动触发，可以调用此接口。（单个）
export async function printOrderTicket(id) {
  return request(`${window.API_BASE_URL}/admin/order/${id}/printTicket`, {
    method: 'POST',
  });
}

// 获取支付方式列表
export async function getPayMethods() {
  return request(`${window.API_BASE_URL}/admin/payMethods`, {
    method: 'GET',
  });
}

// 获取业务Token（为防止重复提交的场景）
export async function getBizToken(params) {
  return request(`${window.API_BASE_URL}/admin/bizToken`, {
    method: 'GET',
    params,
  });
}

// 结账预览(计算可以抵扣的金额，或者其他临时折扣活动的金额)
export async function checkoutPreview(id, data) {
  const tokenResp = await getBizToken({
    action: 'pay',
  });
  const token = tokenResp?.data?.token;
  return request(`${window.API_BASE_URL}/admin/trade/${id}/checkout`, {
    method: 'POST',
    headers: {
      'X-Order-Token': token,
    },
    data,
  });
}

// 绑定用户
export async function bindTradeUser(id, data) {
  return request(`${window.API_BASE_URL}/admin/trade/${id}/bindUser`, {
    method: 'POST',
    data,
  });
}